/*
 * Copyright (C) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef CLASSIFY_AGGREGATE_TYPES_H
#define CLASSIFY_AGGREGATE_TYPES_H

#include <limits>
#include <string>
#include <tuple>

namespace OHOS {
namespace Media {
enum class PhotoLabel : int32_t {
    ID_CARD = 4,
    PASSPORT = 5,
    DEBIT_CARD = 6,
    BICYCLE = 7,
    BUS = 8,
    SHIP = 9,
    TRAIN = 10,
    AIRPLANE = 11,
    AUTOMOBILE = 12,
    CAT = 14,
    DOG = 15,
    BRIDAL_VEIL = 24,
    FLOWER = 25,
    SUSHI = 27,
    BARBECUE = 28,
    WEDDING = 35,
    CITY_OVERLOOK = 40,
    SUNRISE_SUNSET = 41,
    SKY = 44,
    NIGHT = 47,
    MOUNTAIN = 52,
    BUILDING = 53,
    CLOUD = 54,
    WATERFALL = 55,
    RAINBOW = 59,
    CANDLE = 60,
    STATUE_OF_LIBERTY = 62,
    PPT = 63,
    GROUP_PHOTO = 67,
    DINE_TOGETHER = 68,
    UANGZ_TOWER = 69,
    HOT_POT = 96,
    DIPLOMA = 97,
    FOUNTAIN = 105,
    FIREWORKS = 107,
    BUSINESS_CARD = 108,
    BIRTHDAY_CAKE = 113,
    BIRTHDAY = 114,
    THE_GREAT_WALL = 116,
    ORIENTAL_PEARL_TOWER = 117,
    UANGZHOU_TOWER = 118,
    STONECROP_FAMILY = 134,
    RING = 138,
    BRACELET = 139,
    DEED = 179,
    ACCOUNT_BOOK = 180,
    INVOICE = 181,
    TRAIN_TICKET = 182,
    AIR_TICKET = 183,
    MOVIE_TICKET = 184,
    QR_CODE = 191,
    BAR_CODE = 192,
    PIZZA = 207,
    HAMBURGER = 213,
    SANDWICH = 215,
    STEAK = 216,
    CRAB = 222,
    POTALA_PALACE_IN_LHASA = 252,
    MACAU_RUINS_OF_ST_PAULS_ARCH = 254,
    BEIJING_TIANANMEN = 255,
    BEIJING_NATIONAL_STADIUM_BIRD_NEST = 256,
    BEIJING_NATIONAL_SWIMMING_CENTER_WATER_CUBE = 257,
    CHONGQING_JIEFANGBEI = 258,
    PARIS_ARC_DE_TRIOMPHE = 263,
    BEIJING_CENTRAL_TELEVISION_BUILDING = 264,
    MARRIAGE_CERTIFICATE = 294,
    DRIVER_LICENSE = 295,
    DRIVING_LICENSE = 296,
    SHANGHAI_WORLD_EXPO_HALL = 297,
    LAYOUT = 299,
    OCEAN_BEACH_LAKE = 308,
    AURORA = 1073,
    LIGHTNING = 1074,
    MOON = 1075,
    SUNRISE_AND_SUNSET = 1076,
    NIGHT_SKY = 1078,
    VOLCANO = 1080,
    CLIFF = 1081,
    BEACH = 1082,
    SNOWY_MOUNTAIN = 1083,
    DESERT = 1086,
    CORAL_REEF = 1087,
    GRADUATION_GOWN = 1093,
    GROUP_PHOTO_ON_STAGE_AT_GRADUATION = 1131,
    THROW_THE_GRADUATION_CAP = 1132,
    LIFT_THE_VEIL = 1133,
    CHEERS = 1136,
    PYRAMID = 1164,
    ITALIAN_PASTA = 1208,
    FRIED_CHICKEN = 1211,
    WEDDING_CAKE = 1212,
    PEKING_DUCK = 1217,
    SALAD = 1235,
    STEAMED_FISH = 1249,
    BREAD = 1254,
    DESSERT = 1261,
    TEPPANYAKI = 1262,
    DIAMOND = 1265,
    BIRTHDAY_HAT = 1268,
    GRADUATION_CAP = 1269,
    CROWN = 1271,
    JEWELRY = 1276,
    RECEIPTS = 1280,
    BRIDE = 1284,
    CHILD = 1287,
    INFANT_SWIMMING = 1297,
    SLIDE = 1298,
    SWING = 1299,
    SOLVING_A_RUBIKS_CUBE = 1300,
    BLOWING_BUBBLES = 1301,
    FLOOR_PLAN = 1303,
    BONFIRE_PARTY = 1332,
    PLUM_BLOSSOM = 1375,
    SUNFLOWER = 1377,
    LOTUS = 1379,
    DAISY = 1384,
    CARNATION = 1385,
    ORCHID = 1386,
    ROSE = 1388,
    TULIP = 1390,
    CHRYSANTHEMUM = 1393,
};

enum class AggregateType : int32_t {
    CARD = 20001,
    TICKET = 20002,
    DOCUMENT = 20003,
    PARENT_CHILD_ACTIVITY = 20004,
    PET = 20005,
    SELFIE_ALBUM = 20006,
    BIRTHDAY = 20008,
    WEDDING = 20010,
    GRADUATE = 20011,
    FOOD = 20012,
    CULTURAL_LANDSCAPE = 20013,
    NATURAL_SCENERY = 20014,
    FLOWERS_AND_PLANTS = 20015,
    JEWELRY = 20016,
    TRANSPORT = 20019,
    USER_COMMENT_ALBUM = 20020,
};

enum class OcrAggregateType : int32_t {
    FRONT_CARD = 5005,
    BACK_CARD = 5004,
};

inline const std::vector<std::string> BACK_OCR_TEXT {
    "公民身份号码"
};

inline const std::vector<std::string> FRONT_OCR_TEXT {
    "居民身份证", "签发机关", "有效期限"
};

inline const std::unordered_map<OcrAggregateType, std::vector<std::string>> OCR_AGGREGATE_MAPPING_TABLE = {
    {OcrAggregateType::FRONT_CARD, FRONT_OCR_TEXT},
    {OcrAggregateType::BACK_CARD, BACK_OCR_TEXT},
};

inline const std::unordered_map<PhotoLabel, AggregateType> AGGREGATE_MAPPING_TABLE = {
    {PhotoLabel::ID_CARD, AggregateType::CARD},
    {PhotoLabel::PASSPORT, AggregateType::CARD},
    {PhotoLabel::DEBIT_CARD, AggregateType::CARD},
    {PhotoLabel::ACCOUNT_BOOK, AggregateType::CARD},
    {PhotoLabel::DRIVER_LICENSE, AggregateType::CARD},
    {PhotoLabel::DRIVING_LICENSE, AggregateType::CARD},
    {PhotoLabel::DEED, AggregateType::CARD},
    {PhotoLabel::MARRIAGE_CERTIFICATE, AggregateType::CARD},
    {PhotoLabel::INVOICE, AggregateType::TICKET},
    {PhotoLabel::RECEIPTS, AggregateType::TICKET},
    {PhotoLabel::AIR_TICKET, AggregateType::TICKET},
    {PhotoLabel::TRAIN_TICKET, AggregateType::TICKET},
    {PhotoLabel::MOVIE_TICKET, AggregateType::TICKET},
    {PhotoLabel::BUSINESS_CARD, AggregateType::DOCUMENT},
    {PhotoLabel::QR_CODE, AggregateType::DOCUMENT},
    {PhotoLabel::PPT, AggregateType::DOCUMENT},
    {PhotoLabel::BAR_CODE, AggregateType::DOCUMENT},
    {PhotoLabel::LAYOUT, AggregateType::DOCUMENT},
    {PhotoLabel::FLOOR_PLAN, AggregateType::DOCUMENT},
    {PhotoLabel::INFANT_SWIMMING, AggregateType::PARENT_CHILD_ACTIVITY},
    {PhotoLabel::CHILD, AggregateType::PARENT_CHILD_ACTIVITY},
    {PhotoLabel::CAT, AggregateType::PET},
    {PhotoLabel::DOG, AggregateType::PET},
    {PhotoLabel::CANDLE, AggregateType::BIRTHDAY},
    {PhotoLabel::BIRTHDAY_HAT, AggregateType::BIRTHDAY},
    {PhotoLabel::BIRTHDAY_CAKE, AggregateType::BIRTHDAY},
    {PhotoLabel::BIRTHDAY, AggregateType::BIRTHDAY},
    {PhotoLabel::WEDDING_CAKE, AggregateType::WEDDING},
    {PhotoLabel::BRIDAL_VEIL, AggregateType::WEDDING},
    {PhotoLabel::WEDDING, AggregateType::WEDDING},
    {PhotoLabel::BRIDE, AggregateType::WEDDING},
    {PhotoLabel::CHEERS, AggregateType::WEDDING},
    {PhotoLabel::LIFT_THE_VEIL, AggregateType::WEDDING},
    {PhotoLabel::GROUP_PHOTO_ON_STAGE_AT_GRADUATION, AggregateType::GRADUATE},
    {PhotoLabel::DIPLOMA, AggregateType::GRADUATE},
    {PhotoLabel::GRADUATION_GOWN, AggregateType::GRADUATE},
    {PhotoLabel::THROW_THE_GRADUATION_CAP, AggregateType::GRADUATE},
    {PhotoLabel::GRADUATION_CAP, AggregateType::GRADUATE},
    {PhotoLabel::SUSHI, AggregateType::FOOD},
    {PhotoLabel::BARBECUE, AggregateType::FOOD},
    {PhotoLabel::HOT_POT, AggregateType::FOOD},
    {PhotoLabel::PIZZA, AggregateType::FOOD},
    {PhotoLabel::HAMBURGER, AggregateType::FOOD},
    {PhotoLabel::SANDWICH, AggregateType::FOOD},
    {PhotoLabel::STEAK, AggregateType::FOOD},
    {PhotoLabel::CRAB, AggregateType::FOOD},
    {PhotoLabel::TEPPANYAKI, AggregateType::FOOD},
    {PhotoLabel::ITALIAN_PASTA, AggregateType::FOOD},
    {PhotoLabel::FRIED_CHICKEN, AggregateType::FOOD},
    {PhotoLabel::PEKING_DUCK, AggregateType::FOOD},
    {PhotoLabel::SALAD, AggregateType::FOOD},
    {PhotoLabel::STEAMED_FISH, AggregateType::FOOD},
    {PhotoLabel::DESSERT, AggregateType::FOOD},
    {PhotoLabel::BREAD, AggregateType::FOOD},
    {PhotoLabel::NIGHT, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::FIREWORKS, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::BUILDING, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::CITY_OVERLOOK, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::FOUNTAIN, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::BEIJING_TIANANMEN, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::THE_GREAT_WALL, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::ORIENTAL_PEARL_TOWER, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::UANGZHOU_TOWER, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::BEIJING_NATIONAL_STADIUM_BIRD_NEST, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::BEIJING_NATIONAL_SWIMMING_CENTER_WATER_CUBE, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::BEIJING_CENTRAL_TELEVISION_BUILDING, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::SHANGHAI_WORLD_EXPO_HALL, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::CHONGQING_JIEFANGBEI, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::POTALA_PALACE_IN_LHASA, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::MACAU_RUINS_OF_ST_PAULS_ARCH, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::STATUE_OF_LIBERTY, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::UANGZ_TOWER, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::PARIS_ARC_DE_TRIOMPHE, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::PYRAMID, AggregateType::CULTURAL_LANDSCAPE},
    {PhotoLabel::MOON, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::SUNRISE_AND_SUNSET, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::NIGHT_SKY, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::RAINBOW, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::AURORA, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::LIGHTNING, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::OCEAN_BEACH_LAKE, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::CORAL_REEF, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::MOUNTAIN, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::SNOWY_MOUNTAIN, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::CLIFF, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::WATERFALL, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::DESERT, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::VOLCANO, AggregateType::NATURAL_SCENERY},
    {PhotoLabel::FLOWER, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::STONECROP_FAMILY, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::PLUM_BLOSSOM, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::SUNFLOWER, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::LOTUS, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::DAISY, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::CARNATION, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::ORCHID, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::ROSE, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::TULIP, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::CHRYSANTHEMUM, AggregateType::FLOWERS_AND_PLANTS},
    {PhotoLabel::RING, AggregateType::JEWELRY},
    {PhotoLabel::BRACELET, AggregateType::JEWELRY},
    {PhotoLabel::DIAMOND, AggregateType::JEWELRY},
    {PhotoLabel::CROWN, AggregateType::JEWELRY},
    {PhotoLabel::JEWELRY, AggregateType::JEWELRY},
    {PhotoLabel::AUTOMOBILE, AggregateType::TRANSPORT},
    {PhotoLabel::AIRPLANE, AggregateType::TRANSPORT},
    {PhotoLabel::BICYCLE, AggregateType::TRANSPORT},
    {PhotoLabel::SHIP, AggregateType::TRANSPORT},
    {PhotoLabel::BUS, AggregateType::TRANSPORT},
    {PhotoLabel::TRAIN, AggregateType::TRANSPORT},
};
} // namespace Media
} // namespace OHOS
#endif // CLASSIFY_AGGREGATE_TYPES_H